﻿/*链接：https://ac.nowcoder.com/acm/contest/21705/A
来源：牛客网

题目描述 
小张在玩单机游戏的时候遇到这样一款游戏，游戏和我们平时玩的上100层差不多。游戏由两行n列构成的，每一行上有n个木板，游戏通关条件是从（1，1）点跳到（2，n）点。每次可以跳到下一层的两块木板中的任一一块，也就是说可以从 (x1,y1) 到(x2,y2) 的条件是 |x1−x2|≤1 且| y1−y2|≤1。其中有些地方是有陷阱的，有陷阱的地方是不能到达的，现在小张知道那些木板是有陷阱的，他想知道能不能通关。

 

其中：0代表安全，1代表有陷阱。

输入描述:
输入为三行：
第一行一个n，代表了有多少层。
第二三行由0和1组成。
输出描述:
能通关就输出YES，不能输出就输出NO。*/

#include<stdio.h>

int main()
{
    int i = 0;
    int n = 0;
    int flag = 0;
    scanf("%d", &i);
    int arr1[101], arr2[101];
    for (n = 0; n < i; n++)
    {
        scanf("%d", &arr1[n]);
    }
    for (n = 0; n < i; n++)
    {
        scanf("%d", &arr2[n]);
    }
    for (n = 0; n < i; n++)
    {
        if ((arr1[n] == arr2[n]) && (arr1[n] == 1))
            break;
    }

    if (i == n)
    {
        printf("YES");
    }
    else
        printf("NO");
    {
    }
    return 0;
}


//当i=n时，就以为这全部通过